Skip to content

fix: repair plugin release gate for 0.8.0 (integration tests + evals)#73

Merged
itlackey merged 4 commits into
mainfrom
fix/0.8.0-test-failures
Jun 4, 2026
Merged

fix: repair plugin release gate for 0.8.0 (integration tests + evals)#73
itlackey merged 4 commits into
mainfrom
fix/0.8.0-test-failures

Conversation

@itlackey

@itlackey itlackey commented Jun 4, 2026

Copy link
Copy Markdown
Owner

Repairs the akm-plugin release test gate, which was red on main (since 2026-06-02) and blocking the 0.8.0 release.

Integration tests (2 failures)

  • app-logs test: stale assertion expected command:"akm"; the error log records the resolved command path since facd259. Match resolved command robustly.
  • eval-harness auto-feedback: 0.8.0 bundled-CLI resolution prefers the bundled akm-cli over the PATH fake shim, so akm calls bypassed the shim. Added default-off AKM_OPENCODE_IGNORE_BUNDLED_CLI opt-out; eval sandbox sets it.

Tier-2 evals (pre-existing breakage)

  • fake-akm shim didn't strip the new v0.8.0 --shape global flag → mis-parsed verb → curation collapsed to 0. Fixed; curation back to 0.9125 coverage.
  • opencode harness read context synchronously, but 0.8.0 made chat.message curation fire-and-forget → context_budget opencode = 0. Harness now polls system.transform until the async curate resolves.
  • Regenerated tier-2 baseline for 0.8.0 surface (vault removed; env/secret/improve/proposal/memory added) + current healthy metrics.

Local gate: integration 324 pass / 0 fail; tier-2 evals exit 0.

🤖 Generated with Claude Code

itlackey and others added 4 commits June 3, 2026 21:08
1. opencode-plugin 'writes failed AKM tool invocations to OpenCode app logs':
   stale assertion expected command:"akm"; the error log now records the
   resolved command (command.displayCommand, the bundled cli.js path) since
   facd259. Match the resolved command robustly.

2. OpenCode eval harness 'keeps auto-feedback routed through the sandbox akm
   shim': the 0.8.0 bundled-CLI resolution prefers the real bundled akm-cli
   over the PATH-installed fake shim, so akm invocations bypassed the shim.
   Add a default-off AKM_OPENCODE_IGNORE_BUNDLED_CLI opt-out (escape hatch for
   a broken bundled dep) and set it in the eval sandbox so akm resolves to the
   deterministic fake shim on PATH.

Integration suite: 324 pass / 0 fail.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The plugin invokes curate/search with '--shape agent --format text'. The shim's
verb-detection skipped --format/--detail/-q but not --shape, so it parsed the
verb as '--shape' and emitted nothing — collapsing curation coverage to 0 in the
tier-2 evals. Add --shape to the stripped value-flags; curation recovers to its
prior baseline (coverage 0.9125, MRR 0.92).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
akm 0.8.0 made chat.message curation fire-and-forget (no longer blocks the
model on the ~8s curate; result injected by system.transform once the async
curate resolves). The harness read context synchronously right after
chat.message, so context_budget's opencode samples saw 0 chars (drop_rate 1).
Poll system.transform until the background curate populates context (bounded
4s). opencode context recovers (avg ~293 chars, drop_rate 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Captures the intended 0.8.0 surface (akm_vault tool + akm-vault command
removed; env/secret/improve/proposal/memory tools + commands added) and current
healthy metrics: curation coverage 0.9125, opencode context restored, feedback
precision/recall 1.0, memory secret-leakages 0. Latency captured locally
(informational; not gated without --include-latency).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@itlackey itlackey merged commit 303613a into main Jun 4, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant